home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / tc_shell / tc_shell.txt < prev   
Encoding:
Text File  |  1994-09-22  |  32.5 KB  |  504 lines

  1.    **************************************************************************
  2.    **************************************************************************
  3.    ***                                                                    ***
  4.    ***                       T C _ S H E L L    V1.0                      ***
  5.    ***                                                                    ***
  6.    ***                                                                    ***
  7.    ***                        GEM-SHELL für TURBO C                       ***
  8.    ***                                                                    ***
  9.    ***                                                                    ***
  10.    ***                             14. 4.1989                             ***
  11.    ***                                                                    ***
  12.    ***                                                                    ***
  13.    ***                  (c) 1989 by TMMW  Morus Walter                    ***
  14.    ***                                                                    ***
  15.    ***                                                                    ***
  16.    ***                             Written by                             ***
  17.    ***                                                                    ***
  18.    ***                            Morus Walter                            ***
  19.    ***                                                                    ***
  20.    ***                                                                    ***
  21.    **************************************************************************
  22.    **************************************************************************
  23.    
  24.    Dieses Programm ist Public Domain.
  25.    Es darf frei kopiert und weitergegeben werden.
  26.    
  27.    
  28.    Inhaltsverzeichnis:
  29.    
  30.    1.0  Einleitung
  31.    2.0  Allgemeines
  32.    2.1  TC_Shell-Fileselectorbox
  33.    2.2  Edit
  34.    2.3  Projekt
  35.    2.4  Make
  36.    2.5  Einstellungen
  37.    
  38.    
  39.    1.0  Einleitung
  40.    
  41.    Turbo C ist wohl der zur Zeit schnellste C-Compiler für den ST. Vom Editor
  42.    kann  ich das allerdings nicht sagen. Ich kann einfach mit einem Programm,
  43.    bei  dem  man erst eine ganze Sekunde auf die Maustaste drücken muß, bevor
  44.    das Programm etwas davon merkt, nicht arbeiten. Außerdem finde ich es doch
  45.    ziemlich  unpraktisch,  wenn  man  für jedes Programm einen eigenen Editor
  46.    verwenden  muß  (  ein  Editor  für Turbo C, ein Editor für den Assembler,
  47.    Basic  hat  sowieso  einen  eigenen und zum Schreiben von Texten nimmt man
  48.    eine  Textverarbeitung (oder gleich zwei wegen Signum!) ), wobei natürlich
  49.    auch  noch  jedes  Programm andere Tastaturkommandos hat. Wozu besitzt man
  50.    schließlich Tempus? So schön die integrierte Entwicklungsumgebung in Bezug
  51.    auf  Turnarround-Zeiten  auch  sein  mag,  und  auch bei der Korrektur von
  52.    Fehlern  mag  das integrierte Konzept Vorteile haben, die Verwendung eines
  53.    eigenen  Editors  ist  mir doch lieber. Freundlicherweise hat Heimsoeth ja
  54.    neben  der integrierten Version auch noch die Kommandozeilenversion mitge-
  55.    liefert.  Da  ich  aber  Kommandozeileninterpreter auch nicht so besonders
  56.    schätze,  und  insbesondere  auf  die  Vorzüge  eines  komfortablen  Make-
  57.    Utilities  nicht  verzichten  wollte,  habe ich eine alternative Shell für
  58.    Turbo-C entwickelt.
  59.    Das  Ergebnis  ist  heißt TC_Shell, ist vollständig in GEM eingebunden und
  60.    dient der komfortablen Arbeit mit folgenden Programmen:
  61.         Tempus Editor (andere Editoren ebenfalls möglich)
  62.         TC Compiler
  63.         TC Linker
  64.         Devpac Assembler
  65.         Devpac Debugger
  66.              (die  Verwendung  eines  anderen Assemblers/Debuggers ist,  wenn
  67.               auch mit Einschränkungnen möglich)
  68.         Megamax Resource Contruction Set
  69.              (ein anderes RCS kann problemlos verwendet werden)
  70.    
  71.    
  72.    2.0  Allgemeines
  73.    
  74.    TC_Shell läuft in der hohen (monochromen) und der mittleren Auflösung. Die
  75.    niedrige  Auflösung  wird  nicht  unterstützt,  da  ich  aber  auch  keine
  76.    brauchbaren  Editoren  kenne,  die in dieser Auflösung vernünftig arbeiten
  77.    ist  das  keine  allzugroße  Einschränkung;  auch  die  Original  TC-Shell
  78.    arbeitet ja nicht in dieser Auflösung.
  79.    Für  die  beiden  möglichen Auflösungen werden zwei verschiedene Resource-
  80.    files  verwendet  (TC_SHELL.RSC  für  die  hohe  und  TC_SHELC.RSC für die
  81.    mittlere   Auflösung).  Beim  Programmstart  muß  sich  die  entsprechende
  82.    Resourcedatei  im  gleichen  Ordner  wie  TC_SHELL.PRG  befinden. Wird die
  83.    Resourcedatei  nicht  gefunden,  so gibt TC_Shell eine Meldung aus und das
  84.    Programm wird abgebrochen.
  85.    Das  Programm  belegt im Speicher etwa 60 Kbyte. Die Arbeit mit einer 420K
  86.    Ramdisk  hat  bei der Entwicklung des Programms (~100 Kbyte Quelltext in 4
  87.    Sourcfiles)  zu  keinen  Speicherplatzproblemen  geführt  (  1M Ram, keine
  88.    Accessories).
  89.    
  90.    
  91.    2.1  Die TC_Shell File-Selector-Box (FSBox)
  92.    
  93.    TC_Shell  verwendet  eine  eigene  FSBox,  die über folgende Möglichkeiten
  94.    verfügt:
  95.    -  Auswahl  von  bis  zu  acht  Laufwerken  mit der Maus; dabei werden nur
  96.      vorhandene Laufwerke anzeigt.
  97.    -  Auswahl  von  10  Fileextensions per Mausklick; der Text der Extensions
  98.      kann  beliebig  eingestellt  werden; die Pseudo-Extension 'PROG' vereint
  99.      die drei Extensions '*.PRG','*.TOS','*.TTP'.
  100.    - Sortieren der Files nach Filenamen oder Extension
  101.    -  Anzeige  eines  Disketteninfos  mit Diskettengröße, belegtem und freiem
  102.      Speicherplatz der Diskette
  103.    -  Fileinfo  mit  Filename,  Filegröße,  Erstellungsdatum  und -zeit sowie
  104.      Anzeige des Protectmodus
  105.    - Absturzsicherheit gegen Eingabe von Underscores ('_')
  106.    -  von  der  FSBox  aus  können  Ordner angelegt und Dateien gelöscht oder
  107.      umbenannt werden
  108.    
  109.    Im folgenden beschreibe ich kurz, wie man mit dieser FSBox arbeitet:
  110.    Nach  dem  Laden  der  Directory und dem Öffnen der FSBox präsentiert sich
  111.    diese  wie  eine  erweiterte  Standart-FSB,  das  heißt,  man kann mit dem
  112.    Pfadnamen  und  dem  Filenamen  genauso umgehen, wie man es bisher gewöhnt
  113.    ist.  Auch  das  Auswählen  von Filenamen und das Öffnen und Schließen von
  114.    Ordnern funktioniert weiter genauso wie bisher.
  115.    Die  FSBox wurde jedoch um wesentliche Funktionen erweitert. Die Infozeile
  116.    oben in der FSBox zeigt an, wozu die FSBox aufgerufen wurde, wozu also ein
  117.    File ausgewählt werden soll.
  118.    Die  Laufwerkbuttons  (am  linken Rand) dienen der Änderung des Laufwerkes
  119.    von  dem  die  Directory  gezeigt  werden  soll. Es werden die ersten acht
  120.    Laufwerke  (soweit vorhanden) dargestellt. Klickt man einen dieser Buttons
  121.    an,  so  wird  das  gewünschte  Laufwerk in den Pfadnamen eingetragen, die
  122.    Directory  geladen  und  angezeigt. Dabei werden bei jedem Laufwerkwechsel
  123.    alle geöffneten Ordner geschlossen.
  124.    Die  Extensionbuttons  (auf  der rechten Seite) sind vorbelegt, sie können
  125.    aber auch verändert werden, wenn man sie mit den Cursortasten anfährt. Mit
  126.    ihnen kann man die Suchmaske einstellen, so daß nur eine Teildirectory mit
  127.    allen  Ordnern und mit den Files, die der Suchmaske entsprechen (die Wild-
  128.    cards '?' und '*' sind zugelassen), angezeigt wird. Mit den beiden Buttons
  129.    'Name'  und  'Typ'  links unten kann man wählen ob nach dem Filenamen oder
  130.    den  Extensions  sortiert  werden soll (im zweiten Fall wird natürlich bei
  131.    gleichen Extensions nach den Filenamen nachsortiert).
  132.    Soweit die Erweiterungen die zur Vereinfachung der Fileauswahl dienen. Da-
  133.    neben  kann  man  mit dieser FSBox aber noch Informationen über die einge-
  134.    legte  Diskette  und einzelne Dateien aufrufen und einfache Diskettenmani-
  135.    pulationen  durchführen.  Mit einem Doppelklick auf das eingestellte Lauf-
  136.    werksbutton  kann  man  eine Laufwerkinformation aufrufen. Sie enthält die
  137.    Größe,  sowie  den belegten und den freien Speicherplatz der Diskette. Mit
  138.    einem  Doppelklick auf den Filenamen kann man analog eine Dateiinformation
  139.    zu  der  gerade  eingestellen  Datei  aufrufen,  die  den  Filenamen,  die
  140.    Filegröße  und  das  Erstellungsdatum  enhält, sowie anzeigt, ob die Datei
  141.    schreib-  (und  lösch-)  geschützt  ist  (also  ähnlich der Funktion 'Info
  142.    zeigen' im Desktop).
  143.    Möchte  man  einen  Ordner  anlegen so schreibt man den Ordnernamen in das
  144.    Feld  für  den  Filenamen  und  klickt  'Folder'  an. Es erfolgt noch eine
  145.    Sicherheitsabfrage, bestätigt man die Funktion, so wird der neue Ordner im
  146.    aktuelle  Directory (also auch innerhalb bestehender Ordner) neu angelegt.
  147.    ACHTUNG!  Wenn  auf  der Diskette eine gleichnamige Datei besteht, so wird
  148.    diese  ohne  Warnung  zerstört!  Mit  dem Button 'Rename' kann man Dateien
  149.    umbenennen.  Klickt  man diesen Button an, so erscheint eine Dialogbox, in
  150.    der  der  in  der FSBox eingestellte Filename angezeigt wird und verändert
  151.    werden  kann.  Klickt man den Button 'Delete' an, so wird die eingestellte
  152.    Datei nach einer Sicherheitsabfrage gelöscht.
  153.    
  154.    
  155.    2.2  Edit
  156.    
  157.    Im Edit-Menü wird - wie der Name schon sagt - der Editor aufgerufen.
  158.    Der erste Menüeintrag (" >________.___ ") wird erst aktiv, wenn der Editor
  159.    schon  einmal  über  den  Menüeintrag  "Edit  .C file" oder "Edit .S file"
  160.    gestartet  wurde.  Es  wird  dann der Name der dabei aufgerufenen Datei im
  161.    Menüeintrag  dargestellt  und  beim  Anklicken  wird der Editor mit diesem
  162.    Namen  aufgerufen (es wird immer der vollständige Dateipfad mit angegeben,
  163.    auch  wenn er nicht angezeigt wird). Diese Funktion dient dazu, den Editor
  164.    für  häufig  gebrauchtes Source-File schnell und ohne Umweg über die FSBox
  165.    aufzurufen.
  166.    Die  Menüpunkte  "Edit  file ", "Edit .C file ", "Edit .S file ", "Edit .H
  167.    file" unterscheiden sich (außer in der Wirkung auf den ersten Menüeintrag)
  168.    lediglich  im  Aufruf  der  FSBox.  Bei  "Edit"  ist  die  voreingestellte
  169.    Extension  '*.*', bei "Edit .C" '*.C' usw. Natürlich kann man jeweils auch
  170.    Dateien auswählen, die nicht dem voreingestellten Extension entsprechen.
  171.    Der Menüpunkt "Quit" dient ( schwer zu raten ) dem Verlassen von TC_Shell.
  172.    Eine Sicherheitsabfrage findet nicht statt.
  173.    
  174.    
  175.    2.3  Projekt
  176.    
  177.    Die  Philosophie der Projektdateien in TC_Shell entspricht im wesentlichen
  178.    der  von  Turbo  C. TC_Shell ermöglicht allerdings keine lokalen Compiler-
  179.    und  Assembleroptionen  und  erlaubt  keine  Kommentare in Projektdateien.
  180.    Damit  sind  TC_Shell Projektdateien in Turbo C verwendbar, umgekehrt gilt
  181.    dies  allerdings  nur sehr eingeschränkt. Für die Bearbeitung von Projekt-
  182.    dateien mit TC_Shell (Funktion 'Make Projekt') ist zusätzlich wichtig, daß
  183.    alle  Dateien  in  Großbuchstaben  geschrieben sind. Eine zusätzliche Ein-
  184.    schränkung  stellt  die  Beschränkung  der  Projektdateien  auf maximal 30
  185.    Einträge dar, eine Größe, die man nicht so schnell erreichen dürfte.
  186.    Auf  der  anderen  Seite  gibt es auch eine Erweiterung: in Projektdateien
  187.    können  (wie  bei  Megamax  C) Headerfiles angegeben werden, wobei es zwei
  188.    Möglichkeiten  gibt, globale und lokale Headerdateien. Um die Kompatibili-
  189.    tät  zu  Turbo  C zu wahren, werden Headerdateien mit vorangestelltem '*',
  190.    also  gewissermaßen als Kommentare angegeben. Globale Headerdateien gelten
  191.    für  alle  C-Sourcefiles der P  rojektdatei und müssen direkt nach dem '='
  192.    in  der  dritten Zeile der Projektdatei beginnen; sie enden mit der ersten
  193.    nicht-Headerdatei. Dies ist normalerweise der Startupcode, so daß sich die
  194.    lokalen  Headerdateien  des  ersten C-Sourcefiles problemlos unterscheiden
  195.    lassen   (soll   kein   Startupcode  gelinkt  werden  und  ist  die  erste
  196.    nicht-Headerdatei  ein  C-Sourcefile,  so  können  für  diese  Datei keine
  197.    lokalen  Headerdateien  angegeben  werden).  Lokale  Headerdateien  stehen
  198.    direkt  vor  dem  zugehörigen C-Sourcefile und gelten nur für diese Datei.
  199.    Sind   Headerdateien   angegeben,  so  wird  ein  C-Sourcefile  nicht  nur
  200.    compiliert,  wenn  es  jünger als die zugehörige Object-Datei ist, sondern
  201.    auch  wenn  dies für die jüngste Headerdatei des Sourcefiles gilt. Dadurch
  202.    ist  es  etwa möglich, ein Programm komplett (oder auch nur teilweise) neu
  203.    compilieren   zu  lassen,  wenn  etwa  die  Resourcedatei  und  damit  die
  204.    zugehörige Headerdatei geändert wurde.
  205.    Im folgenden stelle ich nochmal beispielhaft den Aufbau einer Projektdatei
  206.    vor  (die  Kommentare  dürfen  natürlich  in  der  Projektdatei nicht auf-
  207.    tauchen):
  208.    
  209.    A:\PROGRAMM.PRG     Name des zu erzeugenden Programms (mit Extension!)
  210.    =                   aus  Kompatibilitätsgründen  nötig  (muß auch stets in
  211.                        der zweiten Zeile stehen)
  212.    *A:\GLOBAL1.H       Globale Headerdatei
  213.    *A:\GLOBAL2.H       eine weitere globale Headerdatei
  214.    D:\LIB\TC_START.O   Turbo  C  Startupcode;  unbedingt  nötig,  da hier der
  215.                        Programmeinsprung erfolgt, kann aber auch durch eigene
  216.                        Routinen ersetzt werden.
  217.    A:\CSOURCE1.C       erste Source-Datei, ohne lokale Headerdateien
  218.    *A:\LOKAL.H         lokale Headerdatei für die nächste Source-Datei
  219.    A:\CSOURCE2.C       zweite Source-Datei, mit lokaler Headerdatei
  220.    A:\ASS_S.S          Assemblersource-Datei
  221.    B:\OBJECT.O         Objectdatei
  222.    D:\LIB\LIB1.LIB     Bibliothektdatei
  223.    
  224.    Projektdateien  können  mit der TC_Shell komfortabel erstellt und editiert
  225.    werden,  es  ist nicht nötig sie mit einem Texteditor zu erstellen, so daß
  226.    man  sich  auch  nicht um alle Einzelheiten kümmern muß. Es ist allerdings
  227.    wichtig  zu  wissen,  daß  TC_Shell  zu  jeder Projektdatei (XXX.PRJ) eine
  228.    gleichnamige Linkdatei (XXX.LNK) erzeugt, die den Namen des zu erzeugenden
  229.    Programms  und die zu linkenden Object- und Bibliotheksdateien enthält (im
  230.    von  TLINK.TTP verarbeitbaren Format, jeder Eintrag steht in einer eigenen
  231.    Zeile;  TC_Shell  verwendet  beim Linkeraufruf prinzipiell diese Dateien).
  232.    Man darf deshalb die Projektdatei nie mit einem Texteditor verändern, ohne
  233.    auch  die  Linkdatei  anzupassen. Dabei ist - um eine spätere Verarbeitung
  234.    mit  der TC_Shell zu gewährleisten - auch darauf zu achten, daß hinter den
  235.    Einträgen  keine  Zeichen  (auch  keine  Leerzeichen)  stehen, und daß die
  236.    Großschreibung beachtet wird.
  237.    Aber  wie  gesagt:  TC_Shell ermöglicht die Erstellung und Veränderung von
  238.    Projektdateien,  so  daß  ein  Editieren  mit dem Texteditor absolut nicht
  239.    nögtig ist.
  240.    
  241.    Nun  aber  genug  der  Erklärungen  über Projektdateien, kommen wir zu den
  242.    Funktionen des Projektmenüs:
  243.    Der  oberste  (inaktive)  Eintrag  enthält den Namen der aktuell geladenen
  244.    Projektdatei. TC_Shell hält jeweils eine Projektdatei im Speicher, auf die
  245.    sich  alle  Projektfunktionen  beziehen,  und  die mit "Projekt auswählen"
  246.    gewechselt  werden  kann.  Beim  Start von TC_Shell kann eine Projektdatei
  247.    entweder über die Kommandozeile (Anmelden von TC_Shell im Desktop mit .PRJ
  248.    und  Start von TC_Shell durch Doppelklick auf die gewünschte Projektdatei;
  249.    erweitert  man  anschließend mit einem Editor in der DESKTOP.INF Datei den
  250.    Filenamen  von TC_Shell um den vollständigen Path, so muß die Projektdatei
  251.    nicht  mehr  notwendigerweise  im  gleichen Directory stehen wie TC_Shell)
  252.    oder  durch  eine  Voreinstellung  in  TC_Shell  (su.). Eine Angabe in der
  253.    Kommandozeile hat jedoch in jedem Fall Vorrang.
  254.    Mit  den  folgenden   Menüpunkten ("Make", "Run" und "Make All"), kann ein
  255.    Projekt compiliert und gelinkt werden.
  256.    Bei  "Make  All"  werden  alle  angegebenen   C- und Assembler-Sourcefiles
  257.    übersetzt; anschließend wird das Programm gelinkt.
  258.    Bei  "Make"  und  "Run"  werden nur geänderte C- und Assembler-Sourcefiles
  259.    übersetzen  und  nur  bei  Bedarf  (also  wenn  sich eine Objectdatei oder
  260.    Bibliotheksdatei geändert hat) gelinkt. Dabei ist es möglich, die Funktion
  261.    durch  Drücken  von  'ESC'  abzubrechen,  wobei eine entsprechende Meldung
  262.    ausgegeben  wird.  Entschließt  man  sich  zu  Abbruch  während gerade der
  263.    Compiler  oder  Linker  läuft, so kann die 'ESC'-Taste bereits während des
  264.    Programmlaufs  gedrückt  werden  (der  Compiler  oder  Linker wird dadurch
  265.    natürlich  nicht  sofort  unterbrochen),  wobei  man  die Taste allerdings
  266.    mehrmals  drücken  sollte,  da  nicht  sicher  ist,  ob  der  Rechner  den
  267.    Tastendruck registriert (selbst bei wiederholtem Drücken von 'ESC' ist der
  268.    Erfolg zweifelhaft). Es werden in jedem Fall alle Tasten aus dem Tastatur-
  269.    puffer  gelöscht  (auch  solche die etwa vor 'ESC' stehen und alle 'ESC').
  270.    Bei "Run" wird zusätzlich das erstellte Programm ausgeführt.
  271.    Die Menüpunkte "Run Programm" und "Debug Programm" führen das Programm das
  272.    in der Projektdatei festgelegt ist aus, beziehungsweise rufen den Debugger
  273.    dafür auf.
  274.    Mit  "Select  Projekt"  läßt sich eine neue Projektdatei auswählen und mit
  275.    "Make Projekt" kann man Projektdateien erstellen:
  276.    Dazu dient eine Dialogbox, deren linker Teil der Auswahl der Dateien dient
  277.    und  im  Aufbau  der  Fileselectorbox entspricht. Lediglich die Extension-
  278.    buttons  sind  an  anderem  Platz  (unter  dem  Feld  für die ausgewählten
  279.    Dateien)  zu  finden,  auch kann man die Extensions hier nicht ändern. Der
  280.    Fileselctorteil  erlaubt  das  Anzeigen  von  Datei- und Diskinfos wie die
  281.    FSBox  (Datei  löschen,  umbennen oder Ordner anlegen ist allerdings nicht
  282.    möglich),  abweichend  vom  FSBox-Aufruf  wird  Sortieren  nach Dateitypen
  283.    voreingestellt.
  284.    Rechts  neben dem Fileselectorfeld findet sich das Feld für die ausgewähl-
  285.    ten  Dateien,  die  in  die Projektdatei aufgenommen werden sollen. In den
  286.    beiden  oberen,  abgesetzen  Zeilen wird der Name der Projektdatei und der
  287.    Name  des zu erstellenden Programmes dargestellt. Darunter findet sich ein
  288.    Feld,  in  dem  jeweils acht Einträge der Projektdatei gezeigt werden, und
  289.    das  rechts  einen  Scrollbalken  wie  die  FSBox  besitzt, mit dem in den
  290.    Einträgen  geblättert  werden  kann  (natürlich  nur  bei  mehr  als  acht
  291.    Einträgen).
  292.    Über  diesem  Feld  befinden sich die vier Button "Copy", "Del", "Ins" und
  293.    "New",  die  zum  Editieren  dienen,  in  der obersten Zeile drei Ausgang-
  294.    Button, "Abbruch", "Save" und "Ok".
  295.    Wie  erstellt  bzw.  editiert man nun mit dieser Dialogbox Projektdateien?
  296.    Nun  das  Prinzip  ist  ganz  einfach,  daß man im Fileselctorteil (links)
  297.    Dateien  auswählt und an den Projektteil (rechts) übergibt. Im Projektteil
  298.    werden die Dateien mit vollständigem Path angezeigt, der gesammt Name darf
  299.    dabei  jeweils nicht länger als 40 Zeichen sein, längere Namen lassen sich
  300.    nicht  auswählen. Zum Auswählen gibt es mehrere Möglichkeiten: besteht die
  301.    Datei  bereits,  so  kann  man sie durch Doppelklick auf den Dateinamen im
  302.    Fileselector-Feld  direkt übergeben, man kann sie aber auch durch Einfach-
  303.    klick  selektieren,  so daß sie im Name-Feld erscheint und durch Mausklick
  304.    auf  den Button "Copy" in die Projektdatei übernehmen. Um Dateien, die auf
  305.    Diskette noch nicht existieren, in die Projektdatei zu übernehmen schreibt
  306.    man  einfach  ihren Dateinamen in das Namensfeld und klickt Copy an (dabei
  307.    gilt natürlich der eingestellte Path).
  308.    Wird  eine  Datei  an  den  Projektteil  übergeben,  so  geschieht je nach
  309.    Dateityp (erkannt am Extension) folgendes:
  310.    Wird  eine Projektdatei (.PRJ) ausgewählt, so wird der Name in die oberste
  311.    Anzeigezeile  übernommen.  Existiert  die Datei schon, kann sie eingelesen
  312.    werden.  Dazu  erscheint  eine  Dialogbox, in der man angeben kann, ob die
  313.    Datei  eingelesen  werden  soll,  wobei  man  Wahl  zwischen  zusätzlichem
  314.    Einlesen  und  Ersetzen  der bisherigen Einträge hat. Ist anschließend das
  315.    Feld  für  den  Programmnamen leer, so wird hier der Name der Projektdatei
  316.    mit  in .PRG geändertem Extension eingestellt. Dieser Name läßt sich durch
  317.    Übergeben  von Programmnamen (erkenntlich an den Extensions .PRG, .TOS und
  318.    .TTP) jederzeit ändert.
  319.    Bei  der  Übergabe  von  Header-Dateien  (.H)  Source-Dateien (.C bzw .S),
  320.    Objectdateien  (.O)  und  Bibliotheken  (.LIB) wird der Name in den ersten
  321.    freien  Eintrag  im  Projektfeld eingetragen (der nicht unbedingt sichtbar
  322.    sein  muß!),  wobei  außer  bei  Headerdateien Mehrfachangaben von Dateien
  323.    unmöglich weil unsinnig sind. Sie werden einfach ignoriert, das heißt ohne
  324.    Fehlermeldung  übergangen.  Dabei  gilt es auch als Mehrfachangabe wenn zu
  325.    einer  Sourcedatei  auch  noch  die  Objectdatei angegeben wird (und umge-
  326.    kehrt).
  327.    Die  Reihenfolge  der  Dateien  im Projektfeld ist relevant, das heißt die
  328.    Dateien  werden  so  in die Projekt- (und Link-) Datei übernommen, wie sie
  329.    hier  vorliegen  (was  insbesondere  für  den  Startup-Code  wichtig ist).
  330.    Deshalb  gibt es zwei Funktionen zum Löschen bzw Einfügen von Einträgen im
  331.    Projektfeld.  Gelöscht werden kann erstens durch Auswählen eines Eintrages
  332.    und  Anklicken von "Del" (Delete = Löschen) und zweitens durch Doppelklick
  333.    auf  den  Eintrag.  Dabei  wird  jeweils  zunächst  der  Eintrag  in einen
  334.    Leereintrag  umgewandelt,  der  durch einen weiteren Löschvorgang entfernt
  335.    werden  kann.  Einfügen  lassen  sich  Leereinträge  über dem Ausgewählten
  336.    Eintrag  durch  Anklicken  von "Ins" (Insert = Einfügen). Der Button "New"
  337.    dient zum völligen Löschen des Projektfeldes.
  338.    So nun bleiben noch die Möglichkeiten zu Verlassen:
  339.    Abbruch dürfte klar sein; man verläßt die Dialogbox ohne daß die erstellte
  340.    Projektdatei  gespeichert  wird.  Genau  dies (das Speichern) erreicht man
  341.    durch  den  Button  "Speichern"  (klar  nicht?). Aber wozu dient dann noch
  342.    "Ok"?  Ganz einfach: mit "Ok" wird die Projektdatei nicht nur gespeichert,
  343.    sondern  auch noch als aktuelle Projektdatei übernommen, so daß man sofort
  344.    mit ihr arbeiten kann.
  345.    
  346.    
  347.    2.4  Make
  348.    
  349.    Im  Menü  Make  finden  sich  die  Funktionen  zum  Aufruf von Programmen,
  350.    Debugger,  Compiler,  Linker,  Resource  Construction  Set  und  Utilities
  351.    unabhänging von der geladenen Projektdatei.
  352.    Die Menüpunkte im einzelnen:
  353.    Mit  'Run  Programm  ...'  kann  man  ein beliebiges Programm in der FSBox
  354.    auswählen  und  starten.  Bei .TTP-Programmen erscheint eine Dialogbox zum
  355.    Eingeben  der  Kommandozeile, bei .PRG oder .TOS-Programmen, kann man dies
  356.    durch  Drücken  der Control-Taste (beim Beenden der FSBox) erreichen (gilt
  357.    übrigens  auch  für  'Run  Programm'  und 'Run' im Projektmenü). Ach ja da
  358.    fällt  mir  noch  ein:  beim Starten von Programmen stellt TC_Shell in der
  359.    ersten   (GEM-Programme)   bzw   in   den  ersten  beiden  (TOS-Programme)
  360.    Bildschirmzeilen  den  Programmnamen und die übergebene Kommandozeile dar;
  361.    dies  geschieht  bei  allen  Programmaufrufen,  also  auch beim Aufruf von
  362.    Editor, Compiler ....
  363.    Mit  'Debug Programm ...' wird der Debugger aufgerufen, wobei ihm der Name
  364.    des zu debuggenden Programms übergeben wird.
  365.    Mit  'Compile  ...' compiliert man ein einzelnes Sourcefile, mit 'Assemble
  366.    ...' ruft man den Assembler auf.
  367.    Nun  zum  Linken,  das sich etwas schwieriger gestaltet. Da eine Kommando-
  368.    zeile  höchstens 127 Zeichen lang sein darf, könnte es leicht zu Problemen
  369.    kommen, wollte man alle zu linkenden Dateien in der Kommandozeile angeben,
  370.    schließlich  hat man ja - neben den eigenen Objectfiles - allein schon bis
  371.    zu  fünf  Standartbibliotheken  und  den  Startup-Code anzugeben. TC_SHELL
  372.    verwendet  beim  Linken deshalb ausschließlich Kommandodateien (das Format
  373.    ist im TC Handbuch beschrieben). Deswegen gibt es auch zwei Menüpunkte zum
  374.    Linken: 'Link .lnk' verwendet man, wenn schon eine Kommandodatei (xxx.LNK)
  375.    existiert,  in  der  FSBox  wird dann einfach die Kommandodatei angegeben.
  376.    'Link  ...' verwendet man, wenn noch keine Kommandodatei besteht, oder die
  377.    Kommandodatei  geändert werden soll. Es erscheint dann die gleiche Dialog-
  378.    box wie bei 'Make Projekt' und das dort gesagte gilt entsprechend.
  379.    Noch ein Wort zu Compiler- und Linkeraufruf:
  380.    Compiler und Linker geben ihre Fehlermeldungen standartmäßig auf den Bild-
  381.    schirm aus; dies ist natürlich nicht optimal, wenn man aufgetretene Fehler
  382.    später  im  Editor  korrigieren  will. Versuche mit I/O-Umleitung brachten
  383.    nicht  die  gewünschten  Resultate  (beispielsweise stürzte der Linker ab,
  384.    warum  auch  immer) und haben den grundsätzlichen Nachteil, daß dann keine
  385.    Meldungen  mehr  auf  den  Bildschirm ausgegeben werden. Deshalb verwendet
  386.    TC_Shell  ein  anderes  Konzept: es hängt sich (nur während des Compiler-/
  387.    Linkeraufrufs) durch Verbiegen des TRAP #1-Vektors ins Gemdos und schreibt
  388.    alle  Ausgaben  zusätzlich  in  eine  Datei, deren Name mit den Compiler-/
  389.    Linkeroptionen  (su.)  eingestellt  werden  kann.  Wird  im Fehlerfall der
  390.    Editor  aufgerufen,  so  wird diese Fehlerdatei als erster Parameter über-
  391.    geben (beim Compiler folgen die Namen der compilierten Sourcedateien). Als
  392.    Dateiname   ist   übrigens   auch   "PRN:"   für   einen  Drucker  an  der
  393.    Centronics-Schnittstelle   und   "Aux:"  für  die  serielle  Schnittstelle
  394.    möglich.  Auch  "CON:"  wäre erlaubt, führt aber nur zu Doppelausgaben auf
  395.    den Bildschirm (merkwürdigerweise buchstaben- weise).
  396.    ACHTUNG!  Fehler  in  der  Routine  zum Schreiben der Fehlerdateien werden
  397.    gegenwärtig   nicht   beachtet   (in  der  Gemdos-Routine  ist  das  etwas
  398.    diffiziel).  Einen Absturz dürfte das normalerweise nicht zur Folge haben,
  399.    allerdings  habe  ich  bei einer vollen Ramdisk festgestellt, daß dann die
  400.    Ausgabe  stark  verlangsamt wird. Man sollte also etwas aufpassen, was man
  401.    als Fehlerdateinamen angibt. Im allgemeinen ist die Wahrscheinlichkeit für
  402.    das Auftreten von Fehlern aber nicht zu groß.
  403.    Der  Menüpunkt  "Utility  ..." entspricht mit einer Ausnahme dem Menüpunkt
  404.    "Run  Programm  ...".  Die  Ausnahme betrifft die Verwendung eines anderen
  405.    Paths  (siehe  auch  Einstellungen).  Geplant ist das so, daß der Path von
  406.    "Utility"  auf  ein  Directory  zeigt, in dem Programmierutilities stehen,
  407.    während der Path von "Run Programm ..." auf das entstehende Programm zeigt
  408.    (man muß dann nicht immer in der FSBox den Path wechseln).
  409.    "RCS"  dient  dem  Aufruf  des  Resource  Construction Set; da das von mir
  410.    verwendtete  Megamax  RCS  die  Kommandozeile  nicht  auswertet, wird kein
  411.    Dateiname übergeben.
  412.    
  413.    
  414.    2.5  Einstellungen
  415.    
  416.    Mit  der  TC_Shell können im Menü 'Settings' so gut wie alle Turbo C Para-
  417.    meter  verändert  werden,  teilweise  sogar  mehr  als  mit  der Original-
  418.    TC-Shell.
  419.    Da  wären  zunächst die Einstellungen für die Projektverwaltung. Neben dem
  420.    Namen  der  beim  Start  mitzuladenden Projektdatei (sie wird nur geladen,
  421.    sofern  in  der Kommandozeile keine andere Datei angegeben wird; wird kein
  422.    Name angegeben, so wird keine Projektdatei geladen) kann man das Verhalten
  423.    von  'Make'  (nicht  'Make  all')  bei fehlenden Sourcedateien einstellen.
  424.    Werden  die  entsprechenden  Button  aktiviert,  so geht die TC_Shell beim
  425.    Fehlen einer C- oder Assembler-Sourcedatei einfach davon aus, es wäre eine
  426.    Objectdatei  eingetragen  (deren  Existenz  überprüft wird). Headerdateien
  427.    können   total  übergangen  werden.  Es  ist  allerdings  sinnvoller,  die
  428.    Projektdatei  zu ändern, da das Suchen nach nicht vorhandenen Dateien auch
  429.    seine Zeit braucht.
  430.    Zum Einstellen der Start-Projektdatei gibt es noch zwei Hilfen:
  431.    'Search'  dient  zum Auswählen der Projektdatei mit Hilfe der FSBox. Diese
  432.    Funktion steht auch in den anderen Einstellungsdialogen bei allen dateibe-
  433.    zogenen  Angaben  zur Verfügung, auch wenn ich sie im folgenden nicht mehr
  434.    nennen werde.
  435.    'aktuell' übernimmt den Namen der aktuellen Projektdatei.
  436.    Zum  Verlassen  der  Dialogbox gibt es (ählich wie bei 'Make Projekt' drei
  437.    Möglichkeiten, 'Abbruch', dh. Beenden ohne Übernahme der geänderten Daten,
  438.    'ok',  dh.  Beenden  mit  Übernahme  der  geänderten  Daten und zusätzlich
  439.    'Save',  wobei  die  Daten übernommen werden und gleichzeitig der Name der
  440.    Start-Projektdatei  (und nur dieser) in die Systemeinstellungen übernommen
  441.    wird.
  442.    Editor  Optionen:  Zu  den Editor-Optionen gehören neben dem Filenamen des
  443.    Editors  die  Einstellungen  für  das  Aufrufen des Editors nach Compiler-
  444.    fehlern  oder  -warnungen  sowie  nach Linker- und Assemblerfehlern. Dabei
  445.    kann  jeweils zwischen Editor nicht aufrufen (nein), Editor immer aufrufen
  446.    (ja) und Editor nach Abfrage aufrufen (bedingt) gewählt werden. Im letzten
  447.    Fall   erscheint   eine  Dialogbox,  um  in  der  konkreten  Situation  zu
  448.    entscheiden,  wobei  bei  'Make'  neben  Editor-Aufruf ja/nein (jeweil mit
  449.    Abbruch  von  Make) auch noch 'weiter' zum Fortsetzen von Make möglich ist
  450.    (vor  allem  im  Fall  von  Compiler-Warnungen).  Bei  Make  wird übrigens
  451.    unabhängig  von  der hier getroffenen Einstellung im Fehlerfall stets eine
  452.    Meldung über das Abbrechen von Make ausgegeben.
  453.    Der  Editordialog  kann  (wie  alle  folgenden)  mit  'Ok'  oder 'Abbruch'
  454.    verlassen werden.
  455.    Als  nächstes  kommen  wir  zu den umfangreichsten Einstellungen: den Com-
  456.    pileroptionen. Dabei möchte ich die Linkeroptionen gleich mitbehandeln, da
  457.    für  sie  praktisch  das  gleiche gilt. Die möglichen Einstellungen werden
  458.    leicht  klar, wenn man sich im TC-Handbuch die Optionen von TCC (Anhang B)
  459.    bzw  die  von  TLINK (Anhang C) ansieht. Zusätlich kann lediglich der Name
  460.    des Compilers/Linker und der jeweiligen Fehlerdatei angegeben werden. Wird
  461.    keine Fehlerdatei angegeben, so wird auch keine erzeugt.
  462.    Die gewählten Compileroptionen (außer Name des Compilers und der Compiler-
  463.    fehlerdatei)  werden  nicht mit den allgemeinen Einstellungen von TC_Shell
  464.    in  der  Datei  TC_SHELL.SET  gespeichert,  sondern  in  der Datei TCC.CFG
  465.    (ASCII-Datei,  siehe  Handbuch).  Diese  Datei  wird  von  TC_Shell nur im
  466.    Bedarfsfall,  dh. für das Einstellen der Compileroptionen geladen. Für die
  467.    Linkeroptionen  gilt  im  Prinzip das gleiche, nur das hier dem Linker der
  468.    Name  der  Kommandodatei (TLINK.LNK) beim Aufruf explizit angegeben werden
  469.    muß  (macht  TC_Shell  natürlich  automatisch).  Beide  Dateien  müssen im
  470.    gleichen Directory stehen wie der Compiler bzw Linker.
  471.    Zusätzlich  zu  den  Einstellungen gibt es noch zwei Button: 'Default' und
  472.    'Restore'. Mit 'Restore' werden die Einstellungen durch erneutes Laden von
  473.    TCC.CFG  bzw.  TLINK.LNK  zurückgesetzt,  mit  'Default'  lassen  sich die
  474.    Standart-  einstellungen  aufrufen.  Im  Compilerdialog  gibt  es noch den
  475.    Button  'Warnungen'  mit  dem  sich  die  Dialogbox  zur  Einstellung  der
  476.    Compilerwarnungen aufrufen läßt. Es lassen sich alle Warnungen einzeln ein
  477.    bzw  ausschalten,  mit  den  Button  '0',  '1'  und  '2'  lassen  sich die
  478.    entsprechenden Warning-Level der TC-Original-Shell einstellen.
  479.    In  der Assemblerdialogbox lassen sich - um die Zusammenarbeit mit anderen
  480.    Assemblern  als  dem  von  mir  verwendetem  Devpac  zu  ermöglichen - die
  481.    Optionen  ein-  und  ausschalten.  Bei  ausgeschalteten  Optionen wird dem
  482.    Assembler nur der Name der zu assemblierenden Datei übergeben. Die anderen
  483.    Einstellungen  ergeben sich aus dem Handbuch des Devpac (und funktionieren
  484.    natürlich auch nur bei diesem).
  485.    Sowohl für den Debugger wie auch für das RCS lassen sich nur die Programm-
  486.    namen  einstellen,  somit  kommen  wir (endlich) zum vorletzten Punkt, den
  487.    Dateipfaden.  TC_Shell  verwendet  im  Zusammenhang  mit  der  FSBox  acht
  488.    verschiedene Dateipfade, die auf verschiedene Directories zeigen können.
  489.    Wo  die einzelnen Dateipfade jeweils verwendet werden ist der Dialogbox zu
  490.    entnehmen;  in  ihr können Voreinstellungen vorgenommen werden. Dabei kann
  491.    ein  ?  als erster Buchstabe für das aktuelle Laufwerk dienen, besteht der
  492.    gesammte Dateipfad nur aus dem ?, so wird er zu '?:\*.*' ergänzt.
  493.    Letzter Punkt: das Speichern der Voreinstellugnen:
  494.    Es  geschieht  mit  dem Menüpunkt 'Save'. Die zugehörige Datei heißt immer
  495.    'TC_SHELL.SET', so daß bei Anklicken dieses Menüpunktes sofort gespeichert
  496.    wird,  wobei  der  Dateipfad  und das Laufwerk vom Programmstart verwendet
  497.    wird. Zusammen mit den gerade besprochenen Systemeinstellungen werden auch
  498.    die Extensions der FSBox gespeichert.
  499.    Beim Starten von TC_Shell wird TC_SHELL.SET geladen. Fehlt die Datei (oder
  500.    konnte  sie aus einem anderen Grund nicht geladen werden), so ist TC_Shell
  501.    erst  einsatzfähig,  wenn  man  die  nötigen Angaben in den Dialogboxen im
  502.    Settings-Menü gemacht hat (Programmnamen ...).
  503.  
  504.